// -----------------------------------------------
// Template GA: ctlFiltro.cs	rel: 3.0.1.0 NoDal
// -----------------------------------------------
using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using System.Text;
using System.Data;
using IGCal.Windows.ReaderControls;
using IGCal.GA;
using IGCal.Funzioni;
using IGCal.GA.BaseObjects;

namespace Calcio.DefaultDirigenti
{
	/// <summary>
	/// Controllo filtro 'ctlDefaultDirigentiFiltro'
	/// </summary>
	public partial class ctlDefaultDirigentiFiltro : ctlFiltroBase
	{

		#region Costruttori della classe

		/// <summary>
		/// Costruttore statico di 'ctlDefaultDirigentiFiltro'
		/// </summary>
		static ctlDefaultDirigentiFiltro()
		{
			string SQL = string.Empty;
			string SQLFine = string.Empty;

			// Costruzione della query per il controllo
			SQL += "Select ";
			SQL += "    DefaultDirigenti.*, ";
			SQL += "    Dirigenti.Cognome as CognomeDirigente, ";
			SQL += "    Dirigenti.Nome as NomeDirigente, ";
			SQL += "    RuoliDirigentiInGara.NomeRuolo as RuoloDirigente ";
           
			SQL += "From ";
			SQL += " ((   DefaultDirigenti ";
			SQL += "Left outer join ";
			SQL += "    Dirigenti On ";
			SQL += "    DefaultDirigenti.IDDirigente = Dirigenti.ID) ";
			SQL += "Left outer join ";
			SQL += "    RuoliDirigentiInGara On ";
			SQL += "    DefaultDirigenti.IDRuoloDirigenteInGara = RuoliDirigentiInGara.ID) ";
     
			// Costruzione della "EVENTUALE" seconda parte della query per il ctl
			// SQLFine += "Order By ";
			// SQLFine += "    ID ";

			sqlSelect = SQL;
			sqlQuerySuffix = SQLFine;
		}

		/// <summary>
		/// Costruttore di 'ctlDefaultDirigentiFiltro'
		/// </summary>
		public ctlDefaultDirigentiFiltro()
		{
			// This call is required by the Windows Form Designer.
			InitializeComponent();

			this.Load += new EventHandler(ctlDefaultDirigentiFiltro_Load);
		}

		void ctlDefaultDirigentiFiltro_Load(object sender, EventArgs e)
		{
			if (Globals.Connection == null)
				return;

			fkIDDirigente.FiltroAnno = Settings.ProjectSettings.AnnoCorrente;
		}

		#endregion


		#region Variabili interne per il controllo

		private static readonly string sqlSelect;
		private static readonly string sqlQuerySuffix;

		#endregion


		#region Funzioni e Metodi

		/// <summary>
		/// Restituisce la query di base sulla quale  basata il controllo
		/// </summary>
		/// <returns>Stringa rappresentante la query di base</returns>
		public override string GetSelect()
		{
			return sqlSelect;
		}

		/// <summary>
		/// Restituisce la parte di filtro della query
		/// </summary>
		/// <returns>Stringa rappresentante la parte di filtro della query</returns>
		public override string GetWhere()
		{
			string SQLWhere = string.Empty;

			// Controllo se e' stato immesso qualcosa per il campo IDDirigente
			if (fkIDDirigente.ID != DBNull.Value)
			{
				SQLWhere += " And DefaultDirigenti.IDDirigente = " + string.Format("{0:0}", fkIDDirigente.ID) + " ";
			}

			// Controllo se e' stato immesso qualcosa per il campo IDRuoloDirigenteInGara
			if (fkIDRuoloDirigenteInGara.ID != DBNull.Value)
			{
				SQLWhere += " And DefaultDirigenti.IDRuoloDirigenteInGara = " + string.Format("{0:0}", fkIDRuoloDirigenteInGara.ID) + " ";
			}

			// Controllo se e' stato immesso qualcosa per il campo Casa
			if (chkCasa.CheckState != CheckState.Indeterminate)
			{
				if (chkCasa.CheckState == CheckState.Unchecked)
				{
					SQLWhere += " And DefaultDirigenti.Casa = 0 ";
				}
				else
				{
					SQLWhere += " And DefaultDirigenti.Casa <> 0 ";
				}
			}

			if (SQLWhere.Length != 0)
			{
				SQLWhere = SQLWhere.Substring(5);
			}

			return SQLWhere;
		}

		/// <summary>
		/// Restituisce la parte di suffix della query
		/// </summary>
		/// <returns>Stringa rappresentante il Suffix della query</returns>
		public override string GetQuerySuffix()
		{
			return sqlQuerySuffix;
		}

		#endregion


		#region Eventi dei controlli contenuti nello User Control

		/// <summary>
		/// Rilancia l'evento ButtonPulisciClick
		/// </summary>
		/// <param name="e">Argomenti dell'evento</param>
		protected override void OnButtonPulisciClick(EventArgs e)
		{
			fkIDDirigente.ID = DBNull.Value;
			fkIDRuoloDirigenteInGara.ID = DBNull.Value;
			chkCasa.CheckState = CheckState.Indeterminate;

			base.OnButtonPulisciClick(e);
		}

		#endregion

	}
}

